﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using Chilis.Proveedores.TransferObjects;
using Chilis.Proveedores.Services;

namespace Chilis.Proveedores.Communication
{
    public class ProveedoresService : IProveedoresService
    {
        AdministracionService administracionService = new AdministracionService();
        ConvocatoriaService convocatoriaService = new ConvocatoriaService();
        ProveedorService proveedorService = new ProveedorService();
        EvaluacionService evaluacionService = new EvaluacionService();
        
        #region " Metodos Propuesta "
        public IList<PropuestaDTO> SearchPropuesta(string idConvocatoria, string idProveedor, string nombrePropuesta)
        {
            return administracionService.SearchPropuesta(idConvocatoria, idProveedor, nombrePropuesta);
        }

        public string AddPropuesta(PropuestaDTO propuesta)
        {
            return administracionService.AddPropuesta(propuesta);
        }
        #endregion

        #region " Metodos Convocatoria "
        public IList<ConvocatoriaDTO> GetConvocatorias()
        {
            return convocatoriaService.GetConvocatorias();
        }

        public IList<ConvocatoriaDTO> GetConvocatoriasSinEvaluacion()
        {
            return convocatoriaService.GetConvocatoriasSinEvaluacion();
        }

        public ConvocatoriaDTO GetConvocatoriaById(int idConvocatoria)
        {
            return convocatoriaService.GetConvocatoriaById(idConvocatoria);
        }

        public IList<ConvocatoriaDTO> SearchConvocatoria(ConvocatoriaDTO filtro)
        {
            return convocatoriaService.SearchConvocatoria(filtro);
        }
        #endregion

        #region " Metodos Convocatoria Proveedor "
        public ConvocatoriaProveedorDTO GetConvocatoriaProveedor(int idConvocatoria, int idProveedor)
        {
            return convocatoriaService.GetConvocatoriaProveedor(idConvocatoria, idProveedor);
        }
        #endregion

        #region " Metodos Area "
        public IList<AreaDTO> GetAreas() {
            return administracionService.GetAllArea();
        }

        public AreaDTO GetArea(int idArea)
        {
            return administracionService.GetArea(idArea);
        }

        public string AddArea(AreaDTO area)
        {
            return administracionService.AddArea(area);
        }

        public string UpdateArea(AreaDTO area)
        {
            return administracionService.UpdateArea(area);
        }

        public string DeleteArea(int idArea)
        {
            return administracionService.DeleteArea(idArea);
        }

        public IList<AreaDTO> SearchAreas(string nombre)
        {
            return administracionService.SearchAreas(nombre);
        }
        #endregion

        #region " Metodos Estado Convocatoria "
        public IList<EstadoConvocatoriaDTO> GetEstadosConvocatoria()
        {
            return administracionService.GetAllEstadoConvocatoria();
        }
        #endregion

        #region " Metodos Proveedor "
        public IList<ProveedorDTO> GetProveedoresPreseleccionados(int idConvocatoria)
        {
            return proveedorService.GetProveedoresPreseleccionados(idConvocatoria);
        }
        public ProveedorDTO GetProveedor(int idProveedor)
        {
            return proveedorService.GetProveedor(idProveedor);
        }
        #endregion

        #region " Metodos Criterio "
        public IList<CriterioDTO> GetCriterios()
        {
            return administracionService.GetCriterios();
        }

        public CriterioDTO GetCriterio(int idCriterio)
        {
            return administracionService.GetCriterio(idCriterio);
        }

        public string AddCriterio(CriterioDTO criterio)
        {
            return administracionService.AddCriterio(criterio);
        }

        public string UpdateCriterio(CriterioDTO criterio)
        {
            return administracionService.UpdateCriterio(criterio);
        }

        public string DeleteCriterio(int idCriterio)
        {
            return administracionService.DeleteCriterio(idCriterio);
        }

        public IList<CriterioDTO> SearchCriterios(string nombre)
        {
            return administracionService.SearchCriterios(nombre);
        }
        #endregion

        #region " Metodos SubCriterio "
        public IList<SubCriterioDTO> GetSubCriterioxIdCriterio(int idCriterio)
        {
            return administracionService.GetSubCriterios(idCriterio);
        }
        #endregion

        #region " Metodos Evaluacion "
        public string AddEvaluacion(EvaluacionDTO evaluacion)
        {
            return evaluacionService.AddEvaluacion(evaluacion);
        }
        #endregion
    }
}
